Se siete in cerca di metodi per parallelizzare le vostre applicazioni vi si presentano alcune possibilità che hanno ognuna molti pro e contro. Analizziamo quelle principali:
- se avete a disposizione il codice sorgente dell'applicativo da far girare, allora potete ricompilarlo per poi esegiurlo su più macchine, che devono essere preventivamente messe in comunicazione via rete (avete cioè bisogno di un cluster). Le librerie per la compilazione che suggerisco sobo Mpich e Mpich2, disponibili per qualsiasi piattaforma, che sono una implementazione di MPI (Message Parsing Interface). Spesso il codice richiede una ritoccatina per essere ricompilato parallelamente;
- se invece non avete la disponibilità del codice sorgente allora la faccenda si complica. Se la vostra applicazione gira su Linux, la cosa più facile da implementare è un cluster OpenMosix, che è molto semplice da configurare e fornisce all'applicazione la parvenza di girare su una sola macchina con tanti processori quante sono le macchine collegate (il metodo è chimato SSI - Single-System Image). Il sito di OpenMosix fornisce una serie di distribuzioni di Linux con il kernel già modificato e precompilato per tutti i gusti, ed è possibile inoltre evitare l'installazione del cluster nei dischi rigidi grazie a numerose distribuzioni live. Tenete presente però che il sistema non accelererà l'esecuzione proporzionalmente al numero di pc connessi, esso riuscirà ad eseguire soltanto più processi nello stesso tempo (se ad es. per convertire un file audio in Mp3 un singolo pc impiega 4 minuti, con 10 pc identici collegati con OpenMosix si riuscirà a convertire 10 file in 4 minuti, e non lo stesso file in un decimo del tempo!);
- se avete del codice che deve essere interpretato, ad esempio un programma in Matlab, allora potete cercare di utilizzare i metodi di parallelismo offerti dall'interprete. Ad esempio, con la versione R2007a, rilasciata il primo marzo 2007, Matlab ha già al suo interno delle routine per applicare il parallelismo a istruzioni molto usate, come ad esempio la risoluzione di sistemi lineari. Prima dell'avvento di questa release sono stati studiati dei metodi che permettevano di interfacciare Matlab in rete con altri esecutori, una panoramica è disponibile qui, implementazioni che però hanno molti limiti (dopo un certo numero di computer connessi al cluster, le prestazioni diminuiscono invece che aumentare, a causa del collo di bottiglia creato dall'ambiente di controllo del parallelismo).
In generale si può affermare che l'esecuzione parallela di un programma non è mai una cosa nè semplice nè ovvia. Infatti deve in sostanza essere il programma stesso ad consentire il parallelismo, cioé l'esecuzione simultanea su due core diversi delle istruzioni nello stesso tempo.
Se invece il programma è puramente sequenziale, allora suggerisco di adottare un pc con processore a 2 o 4 core, che riesce, seppur di poco e solo in presenza di sistema operativo compatibile, ad accelerare le prestazioni in fase di calcolo.
Nessun commento:
Posta un commento